﻿using UnityEngine;
using System.Collections;

public class scFadeEffectManager : MonoBehaviour {

	enum FadeDirection
	{
		FadeIn = 0,
		FadeOut,
		FadePause
	}


	public Texture2D fadeInTexture;

	public float fadeSpeed = 0.3f;
	public int drawDepth = -1000; 


	public float alpha = 0.0f; 
	private float fadeDir = 1.0f; 

	public bool m_bFadeIn;
	public bool m_bFadOut;
	
	public static bool m_bStop;
	public float tempalpha;
	public bool m_balphainit;
	
	// 0 일때 밝아지고
	// 1일때 가장 어두워 진다.
	// 시작하기 위해서는 검은색 텍스쳐가 한장 필요하다.
	
	// Use this for initialization
	void Start () {
		alpha = 0; 
		fadeOut();
	}
	
	// Update is called once per frame
	void Update () {
		if (m_bFadOut)
		{
			fadeOut();
		}
		
		if (m_bFadeIn)
		{
			fadeIn();
		}
	}

	void OnGUI()
	{
		//if (alpha == 1 || alpha == 0)
		//{
		//	return;
		//}

		alpha += fadeDir * fadeSpeed * Time.deltaTime;
			
		FadePauseScreen();
		// 잠시 화면을 반투명하게 어둡게 하는 효과가 있다.
		// 정지 효과시 화면을 약간 어둡게 만들기 위해 만들었다.

//		Debug.Log("alpha = " + alpha);
		Color thisColor = GUI.color;
		thisColor.a = alpha;
		GUI.color = thisColor;
		GUI.depth = drawDepth;
		
		GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), fadeInTexture);
		//GUI.DrawTexture(new Rect(100, 0, Screen.width, Screen.height), fadeInTexture);
	}
	
	void FadePauseScreen()
	{
		if(m_bStop)
		{
			if(!m_balphainit)
			{
				tempalpha = alpha;
				m_balphainit = true;
			}
			
			alpha = Mathf.Clamp01(0.6f);  
		}
		else
		{
			if(m_balphainit)
			{
				m_balphainit = false;
				alpha = tempalpha;
			}
			alpha = Mathf.Clamp01(alpha);  
		}
	}
	
	void fadeIn(){ 
		fadeDir = 1;  
		m_bFadeIn = false;
	} 
	
	
	void  fadeOut(){ 
		fadeDir = -1;    
		m_bFadOut = false;
	}

	public static void SetScreenPause(bool pause)
	{
		m_bStop = pause;
	}
}
